<%@Page Language="VB"%>

<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.OleDb" %>

<%@ Register TagPrefix="wrox" TagName="connect" Src="..\global\connect-strings.ascx" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title>Loading Templates Dynamically with a DataList Control</title>
<style type="text/css">
body, td {font-family:Tahoma,Arial,sans-serif; font-size:10pt}
input {font-family:Tahoma,Arial,sans-serif; font-size:9pt}
.heading {font-family:Tahoma,Arial,sans-serif; font-size:14pt; font-weight:bold}
.subhead {font-family:Tahoma,Arial,sans-serif; font-size:12pt; font-weight:bold; padding-bottom:5px}
.cite {font-family:Tahoma,Arial,sans-serif; font-size:8pt}
</style></head>
<body bgcolor="#ffffff">
<span class="heading">Loading Templates Dynamically with a DataList Control</span><hr />
<!--------------------------------------------------------------------------->

<%'-- insert connection string script --%>
<wrox:connect id="ctlConnectStrings" runat="server" />

<div id="outError" runat="server" />

<form runat="server">
  Select your Template:
  <ASP:DropDownList runat="server" id="TemplateList" AutoPostback="True">
    <ASP:ListItem Value="default" Text="Default Colors" />
    <ASP:ListItem Value="bright" Text="Bright Colors" />
    <ASP:ListItem Value="dark" Text="Dark Colors" />
    <ASP:ListItem Value="mono" Text="Black and White" />
  </ASP:DropDownList>
</form>

<ASP:DataList id="MyDataList" runat="server"
     BorderStyle="Solid"
     BorderWidth=1
     BorderColor="black"
     Font-Name="Tahoma"
     Font-Size="10pt" />

<p><ASP:Label id="lblFileNames" runat="server" /></p>


<!--------------------------------------------------------------------------->

<script language="vb" runat="server">

Sub Page_Load()

   'get connection string from ..\global\connect-strings.ascx user control
   Dim strConnect As String  = ctlConnectStrings.OLEDBConnectionString

   'create a SQL statement to select some rows from the database
   Dim strSelect As String
   strSelect = "SELECT * FROM BookList WHERE ISBN LIKE '18610026%'"

   'create a variable to hold an instance of a DataReader object
   Dim objDataReader As OleDbDataReader

   Try

      'create a new Connection object using the connection string
      Dim objConnect As New OleDbConnection(strConnect)

      'open the connection to the database
      objConnect.Open()

      'create a new Command using the connection object and select statement
      Dim objCommand As New OleDbCommand(strSelect, objConnect)

      'execute the SQL statement against the command to get the DataReader
      objDataReader = objCommand.ExecuteReader()

    Catch objError As Exception

       'display error details
       outError.InnerHtml = "<b>* Error while accessing data</b>.<br />" _
           & objError.Message & "<br />" & objError.Source & "<p />"
       Exit Sub  ' and stop execution

    End Try

   'get the partial filename of the required templates
   Dim strFileName As String
   If Page.IsPostBack Then
      strFileName = TemplateList.SelectedItem.Value & ".ascx"
   Else
      strFileName = "default.ascx"
   End If

   'create the list of template filenames
   Dim strHeadFile As String = "templates/head-" & strFileName
   Dim strItemFile As String = "templates/item-" & strFileName
   Dim strAltIFile As String = "templates/alt-" & strFileName
   Dim strFootFile As String = "templates/foot-" & strFileName

   'load the required template files
   MyDataList.HeaderTemplate = Page.LoadTemplate(strHeadFile)
   MyDataList.ItemTemplate = Page.LoadTemplate(strItemFile)
   MyDataList.AlternatingItemTemplate = Page.LoadTemplate(strAltIFile)
   MyDataList.FooterTemplate = Page.LoadTemplate(strFootFile)

   'display the file names of the current templates
   lblFileNames.Text = "<b>Loaded Templates from Disk:</b><br />" _
      & strHeadFile & "<br />" & strItemFile & "<br />" _
      & strAltIFile & "<br />" & strFootFile & "<br />"

   'set the DataSource property of the DataList
   MyDataList.DataSource = objDataReader

   'and bind the control to the data
   MyDataList.DataBind()

End Sub

</script>

<!--------------------------------------------------------------------------->
<hr /><span class="cite">[<a href="../global/viewsource.aspx">view source</a>] &nbsp; &nbsp; &nbsp; &nbsp;
&copy;2001 <a class="cite" href="http://www.wrox.com/">Wrox Press</a> -
<a class="cite" href="http://www.wrox.com/Books/Book_Details.asp?isbn=1861004885">Professional ASP.NET</a> (ISBN: 1-861004-88-5)</span>
</body>
</html>
